package com.example.demo.test;

/**
 * @description
 *
 * @author lilinchun
 * @date 2023/11/18
 */
public class demo13 {


    public static void main(String[] args) {
        String reg = "/[\u4e00-\u9fa5]/g";
        String msg="<section data-tool=\"mdnice编辑器\" data-website=\"https://www.mdnice.com\" style='padding-right: 10px;padding-left: 10px;text-align: left;line-height: 1.6;letter-spacing: 0.034em;color: rgb(63, 63, 63);font-size: 16px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;'><p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">哈喽，大家好，我是了不起。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">跨站脚本攻击（XSS），是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中，当正常用户访问该页面时，则可导致嵌入的恶意脚本代码的执行，从而达到恶意攻击用户的目的。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">今天我们说一下预防XSS的7种方法。</p>\n" +
                "<hr data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;height: 1px;border-width: initial;border-style: none;border-color: initial;text-align: center;background-image: linear-gradient(to right, rgba(93, 186, 133, 0), rgba(93, 186, 133, 0.75), rgba(93, 186, 133, 0));\">\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">1. 输入验证和过滤</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">输入验证和过滤是一种用于确保用户输入数据的有效性和安全性的技术。它涉及检查和过滤用户输入，以防止恶意代码注入和其他安全漏洞。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过输入验证，您可以验证用户输入是否符合预期的格式、类型和长度。这可以防止用户输入无效或恶意的数据，从而减少应用程序受到攻击的风险。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">输入过滤是通过移除或转义潜在的恶意代码，如HTML标签、JavaScript代码或SQL语句，来确保用户输入的安全性。这可以防止跨站脚本攻击（XSS）和SQL注入等常见的安全漏洞。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">示例：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"> <span style=\"color: #c678dd;line-height: 26px;\">import</span> java.util.regex.Pattern;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">InputValidation</span> </span>{<br>    <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">boolean</span> <span style=\"color: #61aeee;line-height: 26px;\">isValidUsername</span><span style=\"line-height: 26px;\">(String username)</span> </span>{<br>        <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 此处示例验证用户名只包含字母和数字</span><br>        String regex = <span style=\"color: #98c379;line-height: 26px;\">\"^[a-zA-Z0-9]+$\"</span>;<br>        <span style=\"color: #c678dd;line-height: 26px;\">return</span> Pattern.matches(regex, username);<br>    }<br>     <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> String <span style=\"color: #61aeee;line-height: 26px;\">sanitizeInput</span><span style=\"line-height: 26px;\">(String input)</span> </span>{<br>        <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 此处示例移除输入中的HTML标签</span><br>        <span style=\"color: #c678dd;line-height: 26px;\">return</span> input.replaceAll(<span style=\"color: #98c379;line-height: 26px;\">\"&lt;[^&gt;]*&gt;\"</span>, <span style=\"color: #98c379;line-height: 26px;\">\"\"</span>);<br>    }<br>     <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> </span>{<br>        String username = <span style=\"color: #98c379;line-height: 26px;\">\"John123\"</span>;<br>        <span style=\"color: #c678dd;line-height: 26px;\">if</span> (isValidUsername(username)) {<br>            System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Valid username\"</span>);<br>        } <span style=\"color: #c678dd;line-height: 26px;\">else</span> {<br>            System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Invalid username\"</span>);<br>        }<br>         String userInput = <span style=\"color: #98c379;line-height: 26px;\">\"&lt;script&gt;alert('XSS attack');&lt;/script&gt;\"</span>;<br>        String sanitizedInput = sanitizeInput(userInput);<br>        System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Sanitized input: \"</span> + sanitizedInput);<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中， isValidUsername 方法验证用户名是否只包含字母和数字。sanitizeInput 方法移除输入中的HTML标签。这两种方法可以根据应用程序的需求进行自定义和扩展。通过使用输入验证和过滤技术，您可以增加应用程序的安全性，减少潜在的安全漏洞和攻击风险。请注意，这只是输入验证和过滤的基本示例，具体的实现取决于您的应用程序需求和安全策略。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">2. 使用安全的HTML编码</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">使用安全的HTML编码是一种将特殊字符转换为HTML实体，以避免潜在的安全漏洞的技术。它可以防止跨站脚本攻击（XSS）和其他HTML注入攻击。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">安全的HTML编码涉及将特殊字符转换为对应的HTML实体。例如，将 &lt; 转换为 &lt; ，将 &gt; 转换为 &gt; ，将 \" 转换为 \"，将 &amp; 转换为 &amp; 等等。这样可以确保特殊字符在HTML中被正确解析，而不会被误认为是HTML标签或代码。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\"><span style='color: rgb(74, 74, 74);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;'>示例</span>：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.apache.commons.text.StringEscapeUtils;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">HtmlEncoding</span> </span>{<br>    <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> </span>{<br>        String userInput = <span style=\"color: #98c379;line-height: 26px;\">\"&lt;script&gt;alert('XSS attack');&lt;/script&gt;\"</span>;<br>        String encodedInput = StringEscapeUtils.escapeHtml4(userInput);<br>        System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Encoded input: \"</span> + encodedInput);<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中，我们使用了Apache Commons Text库中的 StringEscapeUtils.escapeHtml4 方法来进行安全的HTML编码。将用户输入的字符串进行编码后，特殊字符 &lt; 和 &gt; 被转换为 &lt; 和 &gt; ，从而防止潜在的XSS攻击。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过使用安全的HTML编码，您可以确保用户输入的内容被正确地显示在HTML页面上，同时避免潜在的安全威胁。请注意，具体的实现可能因应用程序的要求而有所不同，上述示例仅供参考。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">3. 使用安全的URL编码</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">使用安全的URL编码是一种将特殊字符转换为URL编码形式，以确保URL的正确性和安全性的技术。它可以防止URL注入攻击和其他安全漏洞。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">安全的URL编码涉及将特殊字符转换为特定的编码格式，例如将空格转换为 “%20”，将斜杠 “/” 转换为 “%2F”，将问号 “?” 转换为 “%3F”，等等。这样可以确保URL中的特殊字符被正确解析，而不会被误认为是URL的一部分或者具有其他含义。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\"><span style='color: rgb(74, 74, 74);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;'>示例</span>：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"><span style=\"color: #c678dd;line-height: 26px;\">import</span> java.io.UnsupportedEncodingException;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> java.net.URLEncoder;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">UrlEncoding</span> </span>{<br>    <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> </span>{<br>        <span style=\"color: #c678dd;line-height: 26px;\">try</span> {<br>            String userInput = <span style=\"color: #98c379;line-height: 26px;\">\"Hello, 你好!\"</span>;<br>            String encodedInput = URLEncoder.encode(userInput, <span style=\"color: #98c379;line-height: 26px;\">\"UTF-8\"</span>);<br>            System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Encoded input: \"</span> + encodedInput);<br>        } <span style=\"color: #c678dd;line-height: 26px;\">catch</span> (UnsupportedEncodingException e) {<br>            e.printStackTrace();<br>        }<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中，我们使用了Java中的 URLEncoder.encode 方法来进行安全的URL编码。用户输入的字符串被编码为UTF-8格式，特殊字符被转换为相应的URL编码形式，确保URL的正确性和安全性。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过使用安全的URL编码，您可以确保URL中的特殊字符被正确编码，以避免URL解析错误或潜在的安全威胁。请注意，具体的实现可能因应用程序的要求而有所不同，上述示例仅供参考。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">4. 使用HTTP头部中的CSP</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">Content Security Policy (CSP)是一种通过HTTP头部中的策略指令来增强网页安全性的机制。它允许网站管理员控制哪些资源可以加载到页面中，从而减少恶意代码的风险。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">CSP的策略指令规定了哪些来源的资源可以被加载，包括脚本、样式表、字体、图像、音频和视频等。这样可以限制恶意脚本的注入、跨站脚本攻击（XSS）和数据泄露等安全风险。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\"><span style='color: rgb(74, 74, 74);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;'>示例</span>：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"><span style=\"color: #c678dd;line-height: 26px;\">import</span> java.util.HashMap;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> java.util.Map;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.apache.http.HttpResponse;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.apache.http.client.HttpClient;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.apache.http.client.methods.HttpGet;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.apache.http.impl.client.HttpClientBuilder;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">ContentSecurityPolicyExample</span> </span>{<br>     <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> <span style=\"color: #c678dd;line-height: 26px;\">throws</span> Exception </span>{<br>        String url = <span style=\"color: #98c379;line-height: 26px;\">\"https://your-website.com\"</span>;<br>         HttpClient httpClient = HttpClientBuilder.create().build();<br>        HttpGet httpGet = <span style=\"color: #c678dd;line-height: 26px;\">new</span> HttpGet(url);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 设置Content Security Policy</span><br>        Map&lt;String, String&gt; headers = <span style=\"color: #c678dd;line-height: 26px;\">new</span> HashMap&lt;&gt;();<br>        headers.put(<span style=\"color: #98c379;line-height: 26px;\">\"Content-Security-Policy\"</span>, <span style=\"color: #98c379;line-height: 26px;\">\"default-src 'self'; script-src 'self' 'unsafe-inline'\"</span>);<br>        headers.forEach(httpGet::setHeader);<br>         HttpResponse response = httpClient.execute(httpGet);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 打印响应结果</span><br>        System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Response Code: \"</span> + response.getStatusLine().getStatusCode());<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中，我们使用Apache HttpClient库发送HTTP请求，并在请求头部中设置了Content Security Policy。示例中的Content Security Policy指令规定了只允许从同源（‘self’）加载默认资源，以及允许从同源和内联脚本（‘unsafe-inline’）加载脚本资源。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过使用Content Security Policy，您可以控制网页中加载的资源，从而增强网页的安全性。具体的策略指令根据您的需求和应用程序的要求可能会有所不同，上述示例仅供参考。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">5. 使用安全的模板引擎</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">使用安全的模板引擎是保护应用程序免受模板注入攻击的一种重要措施。模板注入攻击是一种利用应用程序中的模板引擎漏洞，将恶意代码注入到模板中的攻击方式。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">安全的模板引擎通常提供以下功能来防止模板注入攻击：</p>\n" +
                "<ul data-tool=\"mdnice编辑器\" style=\"margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;\" class=\"list-paddingleft-1\">\n" +
                "<li><section style=\"margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);\"><p style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">自动转义：安全的模板引擎会自动对输出的内容进行转义，确保任何用户输入的恶意代码都会被转义为普通文本，而不会被解释为可执行代码。</p></section></li>\n" +
                "<li><section style=\"margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);\"><p style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">严格的上下文分离：安全的模板引擎会严格区分模板中的代码和数据，确保模板中的代码不能直接访问应用程序的敏感数据或执行危险操作。</p></section></li>\n" +
                "<li><section style=\"margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);\"><p style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">白名单过滤：安全的模板引擎会使用白名单机制，只允许特定的模板标签或函数被执行，从而限制了潜在的危险操作。</p></section></li>\n" +
                "</ul>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\"><span style='color: rgb(74, 74, 74);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;'>示例</span>：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.owasp.encoder.Encode;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.owasp.html.PolicyFactory;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.owasp.html.Sanitizers;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> org.owasp.html.examples.EbayPolicyExample;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">SecureTemplateEngineExample</span> </span>{<br>    <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> </span>{<br>        <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 创建一个HTML过滤策略</span><br>        PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.BLOCKS);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 模拟从用户输入中获取的数据</span><br>        String userInput = <span style=\"color: #98c379;line-height: 26px;\">\"&lt;script&gt;alert('Hello, World!');&lt;/script&gt;\"</span>;<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 使用安全的模板引擎处理用户输入</span><br>        String sanitizedInput = policy.sanitize(userInput);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 输出经过转义和过滤的用户输入</span><br>        System.out.println(<span style=\"color: #98c379;line-height: 26px;\">\"Sanitized Input: \"</span> + Encode.forHtml(sanitizedInput));<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中，我们使用OWASP Java Encoder和OWASP Java HTML Sanitizer库来创建一个安全的模板引擎。示例中的过滤策略将保留文本的格式和块级元素，同时过滤掉任何潜在的恶意代码。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过使用安全的模板引擎，您可以确保用户输入的数据被正确转义和过滤，从而防止模板注入攻击。具体的实现方式和策略可能会因不同的安全库而有所不同，上述示例仅供参考。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">6. 使用安全的Cookie设置</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">使用安全的Cookie设置是确保在Web应用程序中存储和传输用户身份验证和其他敏感信息时的安全性的重要步骤。通过采取适当的安全措施，可以防止恶意用户篡改Cookie或利用Cookie进行攻击。以下是一些常见的安全Cookie设置方法和技术：</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">使用Secure标志：将Secure标志设置为true，确保Cookie只能通过HTTPS安全连接传输，防止在非加密连接上暴露敏感信息。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">使用HttpOnly标志：将HttpOnly标志设置为true，防止通过JavaScript脚本访问Cookie，减少XSS（跨站脚本攻击）的风险。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">设置过期时间：设置Cookie的适当过期时间，以确保Cookie在一定时间后自动失效，减少长期有效的Cookie被滥用的风险。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">对Cookie值进行加密：可以对Cookie的值进行加密，以增加其安全性。在服务器端对Cookie进行加密和解密操作，确保只有服务器能够读取和解析Cookie的内容。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">验证Cookie值：在服务器端对Cookie的值进行验证，确保其合法性和完整性。可以使用数字签名或其他验证机制来验证Cookie的内容是否被篡改。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\"><span style='color: rgb(74, 74, 74);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;'>示例</span>：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"><span style=\"color: #c678dd;line-height: 26px;\">import</span> javax.servlet.http.Cookie;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> javax.servlet.http.HttpServletResponse;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">CookieSecurityExample</span> </span>{<br>    <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> </span>{<br>        <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 创建一个Cookie对象</span><br>        Cookie cookie = <span style=\"color: #c678dd;line-height: 26px;\">new</span> Cookie(<span style=\"color: #98c379;line-height: 26px;\">\"username\"</span>, <span style=\"color: #98c379;line-height: 26px;\">\"john.doe\"</span>);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 设置Secure标志为true，只能通过HTTPS传输</span><br>        cookie.setSecure(<span style=\"color: #c678dd;line-height: 26px;\">true</span>);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 设置HttpOnly标志为true，禁止通过JavaScript访问Cookie</span><br>        cookie.setHttpOnly(<span style=\"color: #c678dd;line-height: 26px;\">true</span>);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 设置Cookie的过期时间为1小时</span><br>        cookie.setMaxAge(<span style=\"color: #d19a66;line-height: 26px;\">60</span> * <span style=\"color: #d19a66;line-height: 26px;\">60</span>);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 添加Cookie到响应头中</span><br>        HttpServletResponse response = <span style=\"color: #c678dd;line-height: 26px;\">null</span>; <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 获取HttpServletResponse对象</span><br>        response.addCookie(cookie);<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中，我们创建了一个名为\"username\"的Cookie，并设置了Secure标志为true，HttpOnly标志为true，以及过期时间为1小时。然后，我们将Cookie添加到HttpServletResponse对象的响应头中，以便将其发送给客户端。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过使用安全的Cookie设置，您可以增加Web应用程序的安全性，保护用户的身份验证和敏感信息免受攻击和滥用。具体的实现方式和设置规则可能会因应用程序的需求而有所不同，上述示例仅供参考。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">7. 防止跨站点请求伪造 (CSRF)</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">防止跨站点请求伪造（CSRF）是一种常见的Web安全威胁，攻击者通过欺骗用户在受信任的网站上执行恶意操作，从而利用用户的身份进行非法操作。为了防止CSRF攻击，可以采取以下措施：</p>\n" +
                "<ol data-tool=\"mdnice编辑器\" style=\"margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: black;\" class=\"list-paddingleft-1\">\n" +
                "<li><section style=\"margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);\">随机生成并验证令牌：在表单中包含一个随机生成的令牌，并在服务器端验证该令牌的有效性。攻击者无法获得有效的令牌，因此无法成功执行CSRF攻击。</section></li>\n" +
                "<li><section style=\"margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);\">使用SameSite属性：设置Cookie的SameSite属性为Strict或Lax，限制Cookie只能在同一站点上发送，防止跨站点请求伪造。</section></li>\n" +
                "<li><section style=\"margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);\">验证来源和引用头：在服务器端验证请求的来源和引用头，确保请求来自受信任的站点，并且不接受来自未知或不受信任的来源的请求。</section></li>\n" +
                "</ol>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\"><span style='color: rgb(74, 74, 74);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;'>示例</span>：</p>\n" +
                "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><span style='display: block;background: url(\"https://mmbiz.qpic.cn/mmbiz_svg/IJdPq631CVElQQTHc0EkeSuQhMiaFGWDe2pc7FAXtKiaZIqpqHRPlR4vOS98j9CpyLzP9C8RLHdhEhKxOLfBEx1HmLibeic6hD4v/640?wx_fmt=svg\") 10px 10px / 40px no-repeat rgb(40, 44, 52);height: 30px;width: 100%;margin-bottom: -7px;border-radius: 5px;'></span><code style=\"overflow-x: auto;padding: 16px;color: #abb2bf;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;-webkit-overflow-scrolling: touch;padding-top: 15px;background: #282c34;border-radius: 5px;\"><span style=\"color: #c678dd;line-height: 26px;\">import</span> javax.servlet.http.HttpServletRequest;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> javax.servlet.http.HttpSession;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> java.security.SecureRandom;<br><span style=\"color: #c678dd;line-height: 26px;\">import</span> java.util.Base64;<br> <span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">class</span> <span style=\"color: #e6c07b;line-height: 26px;\">CsrfProtectionExample</span> </span>{<br>    <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">public</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> <span style=\"color: #c678dd;line-height: 26px;\">void</span> <span style=\"color: #61aeee;line-height: 26px;\">main</span><span style=\"line-height: 26px;\">(String[] args)</span> </span>{<br>        <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 生成随机令牌</span><br>        String token = generateCsrfToken();<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 将令牌存储在会话中</span><br>        HttpServletRequest request = <span style=\"color: #c678dd;line-height: 26px;\">null</span>; <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 获取HttpServletRequest对象</span><br>        HttpSession session = request.getSession();<br>        session.setAttribute(<span style=\"color: #98c379;line-height: 26px;\">\"csrfToken\"</span>, token);<br>         <span style=\"color: #5c6370;font-style: italic;line-height: 26px;\">// 在表单中包含令牌</span><br>        String formHtml = <span style=\"color: #98c379;line-height: 26px;\">\"&lt;form action='/process' method='POST'&gt;\"</span><br>                + <span style=\"color: #98c379;line-height: 26px;\">\"&lt;input type='hidden' name='csrfToken' value='\"</span> + token + <span style=\"color: #98c379;line-height: 26px;\">\"'&gt;\"</span><br>                + <span style=\"color: #98c379;line-height: 26px;\">\"&lt;input type='text' name='username'&gt;\"</span><br>                + <span style=\"color: #98c379;line-height: 26px;\">\"&lt;input type='password' name='password'&gt;\"</span><br>                + <span style=\"color: #98c379;line-height: 26px;\">\"&lt;input type='submit' value='Submit'&gt;\"</span><br>                + <span style=\"color: #98c379;line-height: 26px;\">\"&lt;/form&gt;\"</span>;<br>    }<br>     <span style=\"line-height: 26px;\"><span style=\"color: #c678dd;line-height: 26px;\">private</span> <span style=\"color: #c678dd;line-height: 26px;\">static</span> String <span style=\"color: #61aeee;line-height: 26px;\">generateCsrfToken</span><span style=\"line-height: 26px;\">()</span> </span>{<br>        <span style=\"color: #c678dd;line-height: 26px;\">byte</span>[] csrfToken = <span style=\"color: #c678dd;line-height: 26px;\">new</span> <span style=\"color: #c678dd;line-height: 26px;\">byte</span>[<span style=\"color: #d19a66;line-height: 26px;\">32</span>];<br>        <span style=\"color: #c678dd;line-height: 26px;\">new</span> SecureRandom().nextBytes(csrfToken);<br>        <span style=\"color: #c678dd;line-height: 26px;\">return</span> Base64.getEncoder().encodeToString(csrfToken);<br>    }<br>}<br></code></pre>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">在上面的示例中，我们使用 SecureRandom 类生成了一个32字节的随机令牌，并将其存储在会话中。然后，在表单中包含了一个隐藏的输入字段，将令牌作为值传递给服务器端。当用户提交表单时，服务器端会验证令牌的有效性，以确保请求不是来自恶意站点。</p>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">通过采取这些措施，可以有效地防止跨站点请求伪造攻击，并提高Web应用程序的安全性。请注意，具体的实现方式和设置规则可能会因应用程序的需求而有所不同，上述示例仅供参考。</p>\n" +
                "<h3 data-tool=\"mdnice编辑器\" style=\"margin-bottom: 15px;font-weight: bold;color: black;font-size: 20px;margin-top: 1.2em;\">\n" +
                "<span style='background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-6522.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;margin-bottom: -1px;'></span><span style=\"display: none;\"></span><span style=\"font-size: 17px;display: inline-block;margin-left: 8px;color: rgb(72, 179, 120);\">总结</span><span style=\"display: none;\"></span>\n" +
                "</h3>\n" +
                "<p data-tool=\"mdnice编辑器\" style=\"padding-bottom: 8px;padding-top: 1em;color: rgb(74, 74, 74);line-height: 1.75em;\">Java开发人员可以采用多种方法来防止XSS攻击。通过采取上面介绍的这些预防措施，可以提高应用程序的安全性，并保护用户的数据免受潜在的XSS攻击威胁。</p></section><p data-tool=\"mdnice编辑器\" style='padding-top: 1em;padding-bottom: 8px;outline: 0px;max-width: 100%;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;white-space: normal;background-color: rgb(255, 255, 255);color: rgb(74, 74, 74);line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;margin-bottom: 0px;'><span style='color: black;font-size: 20px;font-weight: bold;letter-spacing: 0.544px;margin-bottom: -1px;outline: 0px;max-width: 100%;background-image: url(\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-4734.jpg\");background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;width: 16px;height: 15px;line-height: 15px;box-sizing: border-box !important;overflow-wrap: break-word !important;'></span><span style=\"font-weight: bold;letter-spacing: 0.544px;margin-left: 8px;outline: 0px;max-width: 100%;font-size: 17px;display: inline-block;color: rgb(72, 179, 120);box-sizing: border-box !important;overflow-wrap: break-word !important;\"><strong style=\"outline: 0px;max-width: 100%;line-height: 1.75em;color: rgb(74, 74, 74);box-sizing: border-box !important;overflow-wrap: break-word !important;\">写在最后</strong></span></p>\n" +
                "<section style='padding-top: 1em;padding-bottom: 8px;outline: 0px;max-width: 100%;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;white-space: normal;background-color: rgb(255, 255, 255);text-size-adjust: auto;color: rgb(74, 74, 74);line-height: 1.6em;box-sizing: border-box !important;overflow-wrap: break-word !important;margin-bottom: 0px;'><strong>时隔2个月，某鱼群再次<span style=\"color: rgb(255, 0, 0);\">限时</span>开放了 。</strong></section><p data-tool=\"mdnice编辑器\" style='padding-top: 1em;padding-bottom: 8px;outline: 0px;max-width: 100%;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, \"PingFang SC\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;font-size: 16px;letter-spacing: 0.544px;text-align: left;white-space: normal;background-color: rgb(255, 255, 255);text-size-adjust: auto;color: rgb(74, 74, 74);line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;margin-bottom: 0px;'>Java技术指北读者交流群<span style=\"letter-spacing: 0.544px;\">，（摸鱼，白嫖技术课程，最新时事，GPT玩法交流等等），又不定时开放了，有一群有趣有料的小伙伴在等你哦！进群方式：加我微信回复 </span><strong style=\"letter-spacing: 0.544px;\"><span style='outline: 0px;max-width: 100%;color: rgb(40, 202, 113);font-family: \"Operator Mono\", Consolas, Monaco, Menlo, monospace;font-size: 14px;letter-spacing: 0.544px;background-color: rgba(27, 31, 35, 0.05);box-sizing: border-box !important;overflow-wrap: break-word !important;'>666</span></strong></p>\n" +
                "<p style=\"text-align: center;margin-bottom: 0px;\"><img class=\"rich_pages wxw-img\" data-galleryid=\"\" data-ratio=\"0.972972972972973\" data-s=\"300,640\" src=\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-1631.jpg\" data-type=\"jpeg\" data-w=\"666\" style=\"width: 217px;height: 211px;\"></p>\n" +
                "<section class=\"mp_profile_iframe_wrp\"><mp-common-profile class=\"js_uneditable custom_select_card mp_profile_iframe\" data-id=\"Mzg4MjYyOTgwNw==\" data-pluginname=\"mpprofile\" data-headimg=\"http://mmbiz.qpic.cn/mmbiz_png/YJibzamcBJeZ5IQWRuBNMibU1lX0myA0Fwddliang4RM753jgCyvQh0d3WtpqJHiaCibBBmE7cmtuXIm8w61CdOiaeicg/0?wx_fmt=png\" data-nickname=\"Java技术指北\" data-alias=\"javanorth\" data-signature=\"回复：java，获取精华资料。专注分享Java技术干货、Java 技术、Spring 全家桶、JavaWeb、多线程、JVM、Spring Boot、Spring Cloud、Dubbo、架构设计、微服务、面试题、Java最新动态等。\" data-from=\"0\" data-is_biz_ban=\"0\" data-weui-theme=\"light\"></mp-common-profile></section><p style=\"text-align: center;margin-bottom: 0px;\"><img class=\"rich_pages wxw-img\" data-galleryid=\"\" data-ratio=\"0.6861111111111111\" data-s=\"300,640\" src=\"http://dy.benwunet.com/attachment/uploads/dy_damai/cai/1693194941-2100.jpg\" data-type=\"png\" data-w=\"1080\" style=\"width: 433px;height: 297px;\"></p>\n" +
                "<p style=\"text-align: center;margin-bottom: 0em;\"><span style=\"text-align: justify;\"></span></p>\n" +
                "<p style=\"display: none;\"><mp-style-type data-value=\"3\"></mp-style-type></p>";
        boolean matches = msg.matches(reg);
        System.out.println();
    }
}
